The need to store digital files, documents, pictures, images and other data continues to increase rapidly. In connection with the electronic storage of data, various data storage systems have been devised for the rapid and secure storage of large amounts of data. Such systems may include one or a plurality of storage devices that are used in a coordinated fashion. Systems in which data can be distributed across multiple storage devices such that data will not be irretrievably lost if one of the storage devices (or in some cases, more than one storage device) fails are also available. Systems that coordinate operation of a number of individual storage devices can also provide improved data access and/or storage times. Examples of systems that can provide such advantages can be found in the various RAID (redundant array of independent disks) levels that have been developed. Whether implemented using one or a plurality of storage devices, the storage provided by a data storage system can be treated as one or more storage volumes.
In order to facilitate the availability of desired data, it is often advantageous to maintain different versions of a data storage volume or master volume. Indeed, data storage systems are available that can provide at least limited data archiving through backup facilities and/or snapshot facilities. The use of snapshot facilities greatly reduces the amount of storage space required for archiving large amounts of data typically associated with a master volume. A snapshot is a point-in-time representation of data on the master volume. For this reason, snapshots can be used to reset a master volume back to the point-in-time represented by the snapshot. This process of resetting a master volume back to a point-in-time represented by the snapshot is known as a “rollback” procedure. A rollback procedure is generally used to restore a master volume that has become corrupted or otherwise damaged.
In snapshot techniques, it is typically assumed that if the data in the master volume becomes corrupt or invalid, only the data that was added to or changed in the master volume since the formation of the snapshot is invalid. This is because the snapshot contains only the original data that was present in the master volume at the time the snapshot was formed, but which has since been deleted from the master volume or changed or replaced by new data within the master volume. In other words, data is only added to a snapshot in response to a change in the master volume. Otherwise, the data is maintained in the master volume. Hence, a rollback procedure returns the original data to the master volume and removes any new data added since the snapshot was taken and this data can be found either in the snapshot (if that data has been altered since the snapshot but before a subsequent snapshot), in a subsequent snapshot (if the data has been altered after the subsequent snapshot), or in the master volume (if the data has not been altered).
A problem with current rollback procedures is that snapshots cannot be deleted until after the rollback procedure is completed. This is because data associated with the point-in-time that the master volume is being rolled back to may be on a number of snapshots. Therefore, snapshots are generally locked until after the completion of a rollback procedure. The snapshots that are usually locked at a minimum include the rollback snapshot and the most recent snapshot at the time of rollback. This is inconvenient for a number of reasons. For example, a user may want to delete the snapshots from the data storage system because it is believed that those snapshots are also corrupted; however, the user has to wait until the rollback is completed. In some instances a rollback procedure can last several days. This means that the user will have to remember to delete the snapshots for a number of days before he/she is allowed to delete the snapshots. As another example, the user may wish to take a new snapshot of the master volume while the rollback is in progress. Unfortunately, memory space for snapshots can be limited, thus restricting the user's ability to take a new snapshot while the rollback is in progress. Therefore, the user has to wait until the rollback procedure is complete before a snapshot can be deleted to liberate memory for new snapshots.